package com.hr;

/**
 * @program: leetcode
 * @description: 汉诺塔  递归优化  尾递归调用  重复利用一块儿栈空间
 * @author: HuRan QQ1345122890
 * @create: 2021-05-21 22:05
 */
public class Hanoi {
    public static void main(String[] args){
        hanoi(3,"A","B","C");
    }
    /**
     * 将n个盘子从p1移动到p3
     */
    static void hanoi(int n, String p1, String p2, String p3) {
        if (n == 1) {
            move(n, p1, p3);
            return;
        }
        hanoi(n - 1, p1, p3, p2);
        move(n, p1, p3);
        hanoi(n - 1, p2, p1, p3);
    }

    static void move(int no, String from, String to) {
        System.out.println("将 " + no + " 号盘子 从" + from + " 移动到 " + to);
    }

    static void test1(){
        int a=10;
        int b= a+10;
        test2(b);
    }

    private static void test2(int b) {
    }
}